package com.gzx.plugin.tjzy.modular.call.predict.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.call.predict.bo.GzxPredictCallQueryBo;
import com.gzx.plugin.tjzy.modular.call.predict.entity.GzxPredictCallDetail;
import com.gzx.plugin.tjzy.modular.call.predict.vo.GzxPredictCallDetailVo;
import com.gzx.plugin.tjzy.modular.call.predict.vo.GzxPredictCallVo;
import vip.xiaonuo.common.pojo.CommonResult;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2025/3/27 17:20
 */
public interface GzxPredictCallService {

    /**
     * 预测外呼复制
     */
    /**
     * 分页查询批次表
     *
     * @param predictCallQueryBo
     * @return
     */
    Page<GzxPredictCallVo> pageList(GzxPredictCallQueryBo predictCallQueryBo);

    /**
     * 分页查询预测外呼详情
     *
     * @param predictCallQueryBo
     * @return
     */
    Page<GzxPredictCallDetailVo> pageDetail(GzxPredictCallQueryBo predictCallQueryBo);

    /**
     * 查询预测外呼
     *
     * @param queryWrapper
     * @return
     */
    List<GzxPredictCallDetail> selectList(LambdaQueryWrapper<GzxPredictCallDetail> queryWrapper);

    /**
     * 根据ID获取预测外呼明细数据
     *
     * @param id
     * @return
     */
    GzxPredictCallDetailVo getCallDetailById(Long id);

    /**
     * 删除预测外呼
     */
    String delPredictCall(String batchNumber);

    /**
     * 分页查询预测外呼明细
     */

    /**
     * 开始任务
     *
     * @param batchNumber
     */
    CommonResult<String> startCallTask(String batchNumber);

    /**
     * 暂停预测外呼任务
     *
     * @param batchNumber
     */
    CommonResult<String> pauseCallTask(String batchNumber);

    /**
     * 继续预测外呼任务
     *
     * @param batchNumber
     */
    CommonResult<String> continueCallTask(String batchNumber);

    /**
     * 完成预测外呼任务
     */
    void finishCallTask(String batchNumber);

    /**
     * 关闭任务
     */
    void closeErrorTask(String taskId);

    /**
     * 获取批次下接听的数量
     *
     * @param taskId
     * @param filterType
     * @return
     */
    int getCallCount(String taskId, Integer filterType);
}
